package cn.com.huzo.service.inventory;

import cn.com.huzo.model.entities.inventory.StockOutHeaderEntity;
import huzofw.service.GenericManager;
import java.util.Map;

/**
 * 领料出库单管理服务对象接口。
 *
 * @author 吴旭
 */
public interface StockOutHeaderManager extends GenericManager<StockOutHeaderEntity, Long> {

    /**
     * 根据给定的条件（headerId+页面信息）信息，得到主表和3个明细表信息
     *
     * @param headerId 领料出库单ID
     * @param currentUserId 当前用户
     * @param workFlowId 工作流ID
     *
     * @return 主表和3个明细表信息
     * @throws java.lang.Exception
     */
    Map<String, Object> fetchByHeaderKey(Long headerId, Long currentUserId, Long workFlowId) throws Exception;

    /**
     * 得到新的单据号（根据规则自动生成）
     *
     * @return @throws java.lang.Exception
     */
    String fetchNewBillNo() throws Exception;

    /**
     * 新增领料出库（同时也增加对应的出库明细）
     *
     * @param instance
     * @return 出库单Id、出库明细
     * @throws Exception
     */
    Map<String, Object> save(StockOutHeaderEntity instance) throws Exception;
}
